<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>
          Google Web Toolkit
          
            -
            Automatic Resource Injection</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link href="../css/base.css" rel="stylesheet" type="text/css">
<link href="./doc.css" rel="stylesheet" type="text/css">
<link href="../css/print.css" rel="stylesheet" media="print" type="text/css">
</head>
<body>
<div id="gaia">&nbsp;</div>
<div id="header">
<div id="logo">
<a href="http://code.google.com/"><img src="http://code.google.com/images/code_sm.png" alt="Google"></a>
</div>
<div id="title">Google Web Toolkit (Beta)</div>
<div id="breadcrumbs">
<div id="nextprev">
<nobr><a href="com.google.gwt.doc.DeveloperGuide.Fundamentals.Modules.ModuleXml.html">&laquo; prev</a></nobr><nobr><a href="com.google.gwt.doc.DeveloperGuide.Fundamentals.Modules.PublicPackageFiltering.html">next &raquo;</a></nobr>
</div>
<span class="item"><a href="http://code.google.com/">Google Code Home</a></span>
        &gt;
        <span class="item"><a href="http://code.google.com/webtoolkit/">Google Web Toolkit</a></span>
        &gt;
        
        <span class="item"><a xmlns="" href="com.google.gwt.doc.DeveloperGuide.html">Developer Guide</a></span> &gt;
						<span class="item"><a href="com.google.gwt.doc.DeveloperGuide.Fundamentals.html">Fundamentals</a></span> &gt;
						<span class="item"><a href="com.google.gwt.doc.DeveloperGuide.Fundamentals.Modules.html">Modules</a></span> &gt;
						<span class="selected item">Automatic Resource Injection</span>
</div>
</div>
<div id="side">
<div id="menu">
<h4>
<a href="http://code.google.com/webtoolkit/">Google Web Toolkit</a>
</h4>
<ul>
<li>
<a href="http://code.google.com/webtoolkit/download.html">Download GWT</a>
</li>
</ul>
<ul>
<li>
<a href="http://code.google.com/webtoolkit/overview.html">Product Overview</a>
</li>
<li>
<a href="http://code.google.com/webtoolkit/gettingstarted.html">Getting Started Guide</a>
</li>
<li>
<a href="http://code.google.com/webtoolkit/documentation/examples/">Example Projects</a>
</li>
</ul>
<ul>
<li>
<a class="selected" href="./com.google.gwt.doc.DeveloperGuide.html">Developer Guide</a>
</li>
<li>
<a href="./gwt.html">Class Reference</a>
</li>
<li>
<a href="http://code.google.com/webtoolkit/issues/">Issue Tracking</a>
</li>
<li>
<a href="http://groups.google.com/group/Google-Web-Toolkit">Developer Forum</a>
</li>
</ul>
<ul>
<li>
<a href="http://googlewebtoolkit.blogspot.com/">GWT Blog</a>
</li>
<li>
<a href="http://code.google.com/webtoolkit/faq.html">GWT FAQ</a>
</li>
<li>
<a href="http://code.google.com/webtoolkit/makinggwtbetter.html">Making GWT Better</a>
</li>
</ul>
<ul>
<li>
<a href="http://code.google.com/webtoolkit/thirdparty.html">Third Party Tools</a>
</li>
</ul>
</div>
<div id="search">
<form action="http://www.google.com/search" method="get">
<div>
<input name="domains" value="code.google.com" type="hidden"><input name="sitesearch" value="code.google.com" type="hidden">
<div class="header">Search this site:</div>
<div class="input">
<input name="q" size="10">
</div>
<div class="button">
<input value="Search" type="submit">
</div>
</div>
</form>
</div>
</div>
<div xmlns="http://www.w3.org/1999/xhtml" id="body">
<h1>Automatic Resource Injection</h1>Modules can contain references to external JavaScript and CSS files,
 causing them to be automatically loaded when the module itself is
 loaded.
 
 <h2>Injecting External JavaScript</h2>
 Script injection is a convenient way to automatically associate
 external JavaScript files with your module. The script injection uses
 the following syntax:
 
 <pre class="code">
 &lt;script src="<i>js-url</i>"&gt;&lt;![CDATA[
   <i>script ready-function body</i> 
 ]]&gt;&lt;/script&gt;
 </pre>
 
 where <i>ready-function body</i> is the body of a JavaScript function
 that returns <code>true</code> when the script is loaded and is ready
 for use. The script is loaded into the namespace of the
 <a xmlns="" href="com.google.gwt.doc.DeveloperGuide.Fundamentals.HostPage.html">host page</a> as if you had
 included it explicitly using the HTML <code>&lt;script&gt;</code>
 element.
 
 
 <p>
 For example, suppose your module relies on a script called
 <code>InjectedScript.js</code> that looks like this:
 
 <pre class="code">function foo() {
  // do something neat
}

doSomethingTimeConsuming();

function bar() {
  // do something else neat
}
</pre>

 
 Your module might look like this:
 
 <pre class="code">&lt;module&gt;
  &lt;inherits name="com.google.gwt.user.User"/&gt;
  &lt;script src="InjectedScript.js"&gt;&lt;![CDATA[
    // More complex tests are possible, but usually checking for the existence
    // of a function is enough.
    if ($wnd.bar)
      return true;
    else
      return false;
  ]]&gt;&lt;/script&gt;
&lt;/module&gt;
</pre>
</p>
<p>
 The purpose of the ready-function is to determine unambiguously that
 the script is fully loaded, so that your GWT code can use
 <a href="com.google.gwt.doc.DeveloperGuide.JavaScriptNativeInterface.html">JSNI</a> and be sure the
 referenced identifiers are available. In the example above, the
 existence of the function <code>bar</code> indicates that the script
 is ready.
 </p>
<h2>Injecting External Stylesheets</h2>
 Stylesheet injection is a convenient way to automatically associate
 external CSS files with your module. Use the following syntax to cause
 a CSS file to be automatically attached to the
 <a href="com.google.gwt.doc.DeveloperGuide.Fundamentals.HostPage.html">host page</a>.
 
 <pre class="code">&lt;stylesheet src="<i>css-url</i>"/&gt;</pre>
 
 You can add any number of stylesheets this way, and the order of
 inclusion into the page reflects the order in which the elements appear
 in your module XML.
 
 <h2>Injection and Module Inheritance</h2>
 Module inheritance makes resource injection particularly convenient. If
 you wish to create a reusable library that relies upon particular
 stylesheets or JavaScript files, you can be sure that clients of your
 library have everything they need automatically by inheriting from your
 module.<div class="topicSeeAlso" xmlns="http://www.w3.org/1999/xhtml">
<h2>Related topics</h2>
<a xmlns="" href="com.google.gwt.doc.DeveloperGuide.Fundamentals.Modules.ModuleXml.html">Module XML Format</a>
</div>
</div>
<div id="footer" xmlns="http://www.w3.org/1999/xhtml">
          &copy;2007 Google
          <span class="noprint">
            -
            <a href="http://www.google.com/">Google Home</a>
            -
            <a href="http://www.google.com/jobs/">We're Hiring</a>
            -
            <a href="http://www.google.com/privacy.html">Privacy Policy</a>
            -
            <a href="http://www.google.com/terms_of_service.html">Terms of Service</a>
            -
            <a href="mailto:code@google.com">Contact Us</a></span>
<div id="license" style="text-align: center; margin: 1em 0em 1em 0em">
            Except as otherwise
            <a href="http://code.google.com/policies.html#restrictions">noted</a>, the content of this  page is licensed under the  <a rel="license" href="http://creativecommons.org/licenses/by/2.5/">Creative Commons Attribution 2.5 License</a>.
              <!--
            <rdf:RDF xmlns="http://web.resource.org/cc/">
<Work rdf:about="">
<license rdf:resource="http://creativecommons.org/licenses/by/2.5/"></license>
</Work>
<License rdf:about="http://creativecommons.org/licenses/by/2.5/">
<permits rdf:resource="http://web.resource.org/cc/Reproduction"></permits>
<permits rdf:resource="http://web.resource.org/cc/Distribution"></permits>
<requires rdf:resource="http://web.resource.org/cc/Notice"></requires>
<requires rdf:resource="http://web.resource.org/cc/Attribution"></requires>
<permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"></permits>
</License>
</rdf:RDF>
              -->
            </div>
</div>
<script src="https://ssl.google-analytics.com/urchin.js" type="text/javascript" xmlns="http://www.w3.org/1999/xhtml"></script><script type="text/javascript">
          _uacct="UA-18071-1"; _uanchor=1; urchinTracker();
        </script>
</body>
</html>
